Google工业风最新论文, Youtube提出双塔结构流式模型进行大规模推荐
以下文章来源于深度传送门 ,作者深度传送门
导读:本文是“深度推荐系统”专栏的第十四篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要介绍下Google在RecSys 2019上的最新论文[1],提出了双塔结构流式模型应用于Youtube进行大规模推荐。
欢迎转载,转载请注明出处以及链接,更多关于深度推荐系统优质内容请关注如下频道。
知乎专栏:深度推荐系统
微博:深度传送门
公众号:深度传送门
介绍
工业界现有的推荐系统都需要从一个超大规模的候选集中拉取item进行打分排序。解决数据稀疏和指数级候选集分布的一种通常做法是从item的内容特征中学习出item的稠密表示。这里很自然地就想到了工业界大名鼎鼎且应用广泛的双塔神经网络结构,其中的一塔就是从丰富的item内容特征中学习到item的表示。
工业界目前训练双塔结构一般是通过随机mini-batch的方式来优化损失函数。这种训练方式存在的一个显著问题就是in-batch loss会因为随机采样偏差而导致模型效果不好,尤其是当样本分布出现明显倾斜的时候。我们提出了一种全新的算法,可以从流式数据中预估item的频率。通过理论分析和实验,新算法有能力在不知道候选集全部的词典情况下做出无偏差的估计并且可以自适应候选集分布的变化。在Youtube线上的实验也证明了该算法的有效性。
模型架构
我们考虑一种通用的推荐问题设定:给定一系列query和候选集,目标就是在给定query的情况下返回最相关的一个候选子集。针对这里的query和候选集中的item,都可以用各自的特征向量来进行表示。在个性化推荐场景中,则是用户user和会话的上下文context构成这里的query侧。
都知道Youtube的推荐架构主要分为两个阶段:召回和排序。而本文则主要聚焦于新增一路如下图所示的双塔召回。query侧的塔是由大量的用户观看历史形成的user features以及共同的seed features构成,候选集侧的塔则是由视频特征构成。训练样本的Label则是由用户的点击和播放时长加权得到。
序列式训练
Youtube的训练数据按天依次产生,训练数据以streaming的方式喂给分布式训练集群。这样模型就可以自动学习并适应最新数据分布的变化。训练算法如下图所示,当收到一个batch的训练样本时,首先针对候选集的item进行采样概率预测,然后根据预测的采样概率构建损失函数,最后迭代训练即可。
流式频率预估的算法如下图所示。由于候选集item的词典不是固定的,时刻都会有新的item产生。因此这里针对item使用hash函数做了一个映射。针对一个指定的候选item y,A表示 y 被采样最近一次步骤,B则表示 y 的预估频率。一旦候选item y在迭代步骤 t 中出现,即可以按照下面迭代公式更新B。
索引和模型预估
如下图所示,索引pipe分为三个阶段:候选集生成,embedding预测和embedding索引。
上述序列式训练生成的双塔模型会定期地保存成为SavedModel并与线上的预测模型保持同步。对于索引库里的所有候选item,可以使用双塔模型的候选集侧的塔生成item的embedding;然后再通过基于树或者量化hash的方式来建立索引。
实验
为了评估所提出算法框架的有效性,我们进行了在item频率预估上的仿真实验、Wikipedia上的检索实验以及Youtube上的实验。这里我们主要关注于在Youtube线上的实验。
模型结构采用上面介绍的结构,针对共同的输入特征,相应的Embedding在query和item的两个塔之间是共享的。双塔均使用三层DNN网络1024 x 512 x 128。
参考
[1] Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendation
推荐阅读
T5 模型:NLP Text-to-Text 预训练模型超大规模探索
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。